RHCA436-基于CentOS8pacemaker+corosync 集群逻辑卷
一、概念
- LVM
普通lVM,当在一个节点创建了LVM,LVM信息是不能实时同步到其他节点的
- HA-LVM
如果格式化的文件系统时ext4或者xfs,则使用HA-LVM,该LVM同时只能再一个节点挂载使用,因为ext4和xfs没有锁机制,如果同时挂载,可能会导致脑裂
- shared-LVM
如果格式化的文件系统时GFS2集群级文件系统,则可以使用CLuster-LVM,可以同时再所有节点挂载使用
二、HA-LVM配置
1.准备工作
[student@workstation ~]$ lab start lvm-ha
2.修改配置文件
vim /etc/lvm/lvm.conf
system_id_source = "uname"
说明:用于区分卷组所在的主机
3.创建逻辑卷
pvcreate /dev/mapper/storage1
vgcreate clustervg /dev/mapper/storage1
lvcreate -L 1G -n halv clustervg
mkfs.xfs /dev/clustervg/halv
4.创建逻辑卷资源
pcs resource describe LVM-activate
pcs resource create halvm LVM-activate vgname=clustervg vg_access_mode=system_id --group halvmfs
说明:
vg_access_mode=system_id 表示集群用system_id区分lvm运行哪个节点
lvm systemid
5.创建文件系统资源
pcs resource create xfsfs Filesystem device=/dev/clustervg/halv directory=/halvm fstype=xfs --group=halvmfs
6.查看集群状态
[root@nodea ~]# pcs resource status
* Resource Group: halvmfs:
* halvm (ocf::heartbeat:LVM-activate): Started nodeb.private.example.com
* xfsfs (ocf::heartbeat:Filesystem): Started nodeb.private.example.com
7.查看nodeb节点挂载情况
[root@nodeb ~]# vgs
VG #PV #LV #SN Attr VSize VFree
clustervg 1 1 0 wz--n- <10.00g <9.00g
[root@nodeb ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
halv clustervg -wi-a----- 1.00g
[root@nodeb ~]# df -h
...
/dev/mapper/clustervg-halv 1014M 40M 975M 4% /halvm
8.测试
[root@nodea ~]# pcs resource move halvmfs
[root@nodea ~]# pcs resource status
* Resource Group: halvmfs:
* halvm (ocf::heartbeat:LVM-activate): Started nodea.private.example.com
* xfsfs (ocf::heartbeat:Filesystem): Started nodea.private.example.com
[root@nodea ~]# df -h
...
/dev/mapper/clustervg-halv 1014M 40M 975M 4% /halvm
9.清除环境
[student@workstation ~]$ lab finish lvm-ha
三、LVM share volume group 配置
1.准备工作
[student@workstation ~]$ lab start lvm-shared
2.在所有节点安装软件包
yum -y install lvm2-lockd dlm
dlm: 分布式锁
clvmd:clvmd 守护进程是 CLVM 的核心。clvmd 守护进程在每个集群计算机上运行,并更新 LVM 元数据,让集群的每个计算机上的 LVM 信息都保持一致
设定 clvmd 和 dlm 相依性及启动顺序。必须在 dlm 之后启动clvmd,且必须在 dlm 所在的同一节点中运行。
3.配置集群分布式锁
[root@nodea ~]# pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence --group=locking
[root@nodea ~]# pcs resource create lvmlockd ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence --group=locking
[root@nodea ~]# pcs resource
* Resource Group: locking:
* dlm (ocf::pacemaker:controld): Started nodea.private.example.com
* lvmlockd (ocf::heartbeat:lvmlockd): Started nodea.private.example.com
4.配置clone,让资源运行在集群所有节点
[root@nodea ~]# pcs resource clone locking interleave=true
interleave=true, 这个设置为false的时候, constraint的order顺序的受到其他节点的影响, 为true不受其他节点影响
[root@nodea ~]# pcs status --full
Full List of Resources:
* Clone Set: locking-clone [locking]:
* Resource Group: locking:0:
* dlm (ocf::pacemaker:controld): Started nodec.private.example.com
* lvmlockd (ocf::heartbeat:lvmlockd): Started nodec.private.example.com
* Resource Group: locking:1:
* dlm (ocf::pacemaker:controld): Started nodeb.private.example.com
* lvmlockd (ocf::heartbeat:lvmlockd): Started nodeb.private.example.com
* Resource Group: locking:2:
* dlm (ocf::pacemaker:controld): Started nodea.private.example.com
* lvmlockd (ocf::heartbeat:lvmlockd): Started nodea.private.example.com
5.创建逻辑卷,所有节点都会生效
1.创建pv
[root@nodea ~]# pvcreate /dev/mapper/mpatha
2.创建共享的卷组
[root@nodea ~]# vgcreate --share sharevg /dev/mapper/mpatha
3.在其他节点执行
ssh root@nodeb
vgchange --lock-start sharevg
ssh root@nodec
vgchange --lock-start sharevg
--lock-start: Start the lockspace of a shared VG in lvmlockd
4.创建一个共享锁的逻辑卷
[root@nodea ~]# lvcreate --activate sy -L 1G -n sharelv1 sharevg
6.创建逻辑卷资源
[root@nodea ~]# pcs resource create sharelvm1 LVM-activate vgname=sharevg lvname=sharelv1 activation_mode=shared vg_access_mode=lvmlockd --group=LVMshared
vg_access_mode=system_id HA-LVM
vg_access_mode=lvmlockd shared-LVM
7.克隆逻辑卷资源
[root@nodea ~]# pcs resource clone LVMshared interleave=true
8.设置资源先后启动顺序,先启动locking-clone,再启动LVMshared-clone
[root@nodea ~]# pcs constraint order start locking-clone then LVMshared-clone
9.设置两个资源组运行在同一个节点
[root@nodea ~]# pcs constraint colocation add LVMshared-clone with locking-clone
[root@nodea ~]# pcs constraint
Location Constraints:
Ordering Constraints:
start locking-clone then start LVMshared-clone (kind:Mandatory)
Colocation Constraints:
LVMshared-clone with locking-clone (score:INFINITY)
Ticket Constraints:
[root@nodea ~]# pcs resource status
* Clone Set: locking-clone [locking]:
* Started: [ nodea.private.example.com nodeb.private.example.com nodec.private.example.com ]
* Clone Set: LVMshared-clone [LVMshared]:
* Started: [ nodea.private.example.com nodeb.private.example.com nodec.private.example.com ]